package com.mjf.scala.chapter07

/**
 * 集合计算初级函数
 */
object Scala11_TestFun {
  def main(args: Array[String]): Unit = {

    val list: List[Int] = List(1, 3, 2, 4)

    // （1）求和
    println(list.sum)   // 10

    // （2）求乘积
    println(list.product)   // 24

    // （3）最大值
    println(list.max)   // 4

    // （4）最小值
    println(list.min)   // 1

    // （5）排序  sorted|sortBy|sortWith
    println(list.sorted)  // List(1, 2, 3, 4) 用于简单的排序

    val list2: List[Int] = List(1, -3, 2, 4)

    // 如果函数参数和函数体是一致的情况，那么不能简化
//    list2.sortBy(_)  // 报错
    println(list2.sortBy(elem => elem)) // List(-3, 1, 2, 4)
//    println(list2.sortBy(elem => elem.abs))
    println(list2.sortBy(_.abs))    // List(1, 2, -3, 4)    按照绝对值排序
//    println(list2.sortBy(elem => elem).reverse) // 降序排序
//    println(list2.sortBy(elem => -elem)) // List(4, 2, 1, -3)   降序排序
    println(list2.sortBy(-_)) // List(4, 2, 1, -3)   降序排序

    // sortWith   Ordering：比较规则
//    println(list2.sortWith((a: Int, b: Int) => {a < b}))     // List(-3, 1, 2, 4)   升序
    println(list2.sortWith(_ < _))    // 升序
    println(list2.sortWith(_ > _))    // 降序



  }
}
